home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ask / ksd / source / cp@keya.c < prev    next >
Text File  |  1998-09-29  |  3KB  |  111 lines

  1. /* KSDサポート関数利用サンプルプログラム */
  2. // API操作型
  3.  
  4. #include <stdio.h>
  5. #include "ksd.h"
  6. #include "defines.h"
  7. #include "amacro.h"
  8.  
  9. /* typedef    unsigned char unchar; */
  10. /* gcd cp@keyA.c ksd.a : うちの環境でのコンパイル方法 */
  11.  
  12. #define    LMAX    1024    /* >KSD_ST_SIZE */
  13.  
  14. PrintKSDStatus(unlong mode)
  15. {
  16. int a;
  17. union {
  18.     unlong md;
  19.     unchar s[sizeof(unlong)+1];
  20. } ss;
  21. unchar devname[8+1];
  22.     prints("KSD状態\n");
  23.     ss.md=mode;
  24.     ss.s[sizeof(long)]=0; // EOS
  25.              printf("\tStatus : %s\n",ss.s);
  26.     a=KSDReadVer();  printf("\tVersion: %d.%d\n",a>>8,a&0xff);
  27.     a=KSDReadSize(); printf("\tKBsize : %d\n",a);
  28.     a=KSDReadFree(); printf("\tKBfree : %d\n",a);
  29.     KSDDevNameA(devname);
  30.              printf("\tDevice : %s\n",devname);
  31. }
  32.  
  33. main(int argc,unchar *argv[])
  34. {
  35. FILE *fp;
  36. int i,factive,fclear,flook;
  37. unchar *fname;
  38. unchar line[LMAX];
  39. unlong mode;
  40.     if (!KSDSetAPI()) {
  41.         prints("KSDが組み込まれていません\n");
  42.         exit(3);
  43.     }
  44.     /* オプションチェック初期化 */
  45.     clear_param();
  46.     if (helpcom(argc,argv,0,"Cp@KeyA","[/A /P /C /L] filename")) exit(255);
  47.     
  48.     // 強制的に活動状態にする
  49.     factive=0;
  50.     if (check_param2("A",argv,argc,0)) factive=1;
  51.     if (check_param2("P",argv,argc,0)) factive=2;
  52.     flook=check_param2("L",argv,argc,0);
  53.     // キーバッファーをクリアしてから書き込む
  54.     fclear=check_param2("C",argv,argc,0);
  55.     
  56.     /* オプションチェック */
  57.     i=check_param_error(argv,argc);
  58.     if (i) {
  59.         printsn("\aオプションエラーです:",argv[i]);
  60.         exit(4);
  61.     }
  62.     
  63.     i=getfname(argc,argv,1,NULL);
  64.     if (i==0) {
  65.         prints("ファイルを指定してください\n");
  66.         exit(1);
  67.     }
  68.     fname=argv[i];
  69.     /* 組み込みを確認してからKDS関数を呼び出すので、エラーチェックは省く */
  70.     if (fclear) KSDClear(); /* キーバッファーをクリアする */
  71.     mode=KSDReadMode();
  72.     if (flook) PrintKSDStatus(mode);
  73.     if ((unchar)(mode)==KSD_ST_Pause) {
  74.         // 休止状態にある
  75.         if (factive) {
  76.             if (factive==1) {
  77.                 /* 強制活動状態にする */
  78.                 KSDActive();
  79.             } // 休止のまま
  80.         } else {
  81.             prints("KSDは休止状態です。一時活動状態にしますか?(Y/N):");
  82.             i=getch();
  83.             if (i==0x1b) {
  84.                 printc('\n');
  85.                 exit(255);
  86.             }
  87.             if (i=='y'||i=='Y') {
  88.                 KSDOnceActive(); /* 一時活動状態にする */
  89.                 prints("Y\n");
  90.             } else    prints("N\n");
  91.         }
  92.     }
  93.     // file open (text mode)
  94.     fp=fopen(fname,"rt");
  95.     if (fp==NULL) {
  96.         printsn("ファイルが見つかりません:",fname);
  97.         exit(2);
  98.     }
  99.     while (fgets(line,LMAX,fp)!=NULL) {
  100.         // \n=0x0aはファイルでは改行だが、キーではただの^Jなので
  101.         // キーの改行=0x0dに変換する
  102.         {int len;
  103.         len=strlen(line);
  104.         if (line[len-1]=='\n') line[len-1]=0x0d;
  105.         KSDWrite(line,len);
  106.         }
  107.     }
  108.     fclose(fp);
  109.     exit(0);
  110. }
  111.